//
// Created by Jisam on 2024/7/27 20:43.
// solve C - Minimum Glutton
#include <bits/stdc++.h>

#define PSI pair<string,int>
#define PII pair<int,int>
#define PDI pair<double,int>
#define PDD pair<double,double>
#define VVI vector<vector<int>>
#define VI vector<int>
#define VS vector<string>

#define PQLI priority_queue<int, vector<int>, less<int>>
#define PQGI priority_queue<int, vector<int>, greater<int>>
//#define i64 long long

#define int long long
using namespace std;

const int N = 1e5 + 5;
int ans = 0;
struct node {
    int a, b;
};
int flag = 0;

void search(int curx, int cury, int i, int x, int y, int n, vector<node> &a, vector<int> &vis) {
    if ((curx <= x || cury <= y) && i == n) {
        ans = max(ans, n);
        return ;
    }
//    if( i >= ans){
//        return;
//    }
    if (curx >= x || cury >= y) {
        ans = max(ans, i);
//        cout << "  curx > x || cury > y " << ans << "\n";
        return ;
    }
//    if (flag == 0) {
    for (int j = 0; j < n; j++) {
        if (vis[j]) continue;
        vis[j] = 1;
//        cout << curx + a[j].a << " " << cury + a[j].b << " " << i + 1 << " " << x << " " << y << " " << n << " "
//             << "\n";
        if(curx + a[j].a > x || cury + a[j].b > y) { ans = max(ans,i);continue;}
        search(curx + a[j].a, cury + a[j].b, i + 1, x, y, n, a, vis);
        vis[j] = 0;
    }
//    }

}

void solve() {
    int n, x, y;
    cin >> n >> x >> y;
//    vector<int> a(n),b(n);
//    for(int i = 0 ; i < n  ; i ++) cin >> a[i];
//    for(int i = 0 ; i < n  ; i ++) cin >> b[i];
//
//
//    cout << n << x << y;
    vector<node> a(n);
    vector<int> vis(n, 0);
    for (int i = 0; i < n; i++) {
        cin >> a[i].a>> a[i].b;
    }

////    sort(a.begin(), a.end(), [&](node n1, node n2) -> bool {
////        return n1.a + n1.b > n2.a + n2.b;
////    });
    search(0, 0, 0, x, y, n, a, vis);
//    for (int i = 0; i < n; i++) {
//        cout << a[i].a << "  "  << a[i].b <<"\n";
//    }
//    int cnt = 0;
//    for (int i = 0; i < n; i++) {
//        if (a[i].a <= x && a[i].b <= y) {
//            x -= a[i].a;
//            y -= a[i].b;
//            cnt++;
//        } else {
//            break;
//        }
//    }
//    ans = 0;
//    for(int i = 0 ; i < n ; i ++){
//
//        x -= a[i].a;
//        y -= a[i].b;
//        ans ++;
//        if(x < 0 || y < 0) break;
//
//    }
//    if(ans != n) ans --;
    cout << ans;
}

signed main() {
    ios::sync_with_stdio(false);
    cin.tie(nullptr);
    int T = 1;
//    cin >> T;
    while (T--) solve();
//    cout << "\n"[];
    return 0;
}